package com.ticorp.salmofood.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

import com.ticorp.salmofood.common.Constantes;
import com.ticorp.salmofood.common.ConstantesView;
import com.ticorp.salmofood.common.Util;
import com.ticorp.salmofood.model.BeanDetalleContrato;
import com.ticorp.salmofood.model.BeanLotesFacturados;
import com.ticorp.salmofood.model.BeanLotesNoFacturados;
import com.ticorp.salmofood.service.BusquedasLotesService;
import com.ticorp.salmofood.viewmodel.BusquedasLotesCommand;

public class BusquedasLotesController extends MultiActionController {

    // INYECCION DE DEPENDENCIAS busquedasLotesService
    private BusquedasLotesService busquedasLotesService;

    public BusquedasLotesService getBusquedasLotesService() {
	return busquedasLotesService;
    }

    public void setBusquedasLotesService(BusquedasLotesService busquedasLotesService) {
	this.busquedasLotesService = busquedasLotesService;
    }

    // BUSCAR LOTES FACTURADOS
    public ModelAndView buscarLotesFacturados(HttpServletRequest request, HttpServletResponse response) {

	Map model = new HashMap();

	String cbo_LF_cliente = request.getParameter("cbo_LF_cliente");
	String cbo_LF_pais = request.getParameter("cbo_LF_pais");
	String cbo_LF_region = request.getParameter("cbo_LF_region");

	String txt_LF_numeroPedido = request.getParameter("txt_LF_numeroPedido");
	String txt_LF_fechaPedidoI = request.getParameter("txt_LF_fechaPedidoI");
	String txt_LF_fechaPedidoF = request.getParameter("txt_LF_fechaPedidoF");
	String txt_LF_numeroFactura = request.getParameter("txt_LF_numeroFactura");
	String txt_LF_fechaFacturaI = request.getParameter("txt_LF_fechaFacturaI");
	String txt_LF_fechaFacturaF = request.getParameter("txt_LF_fechaFacturaF");
	String txt_LF_numeroLote = request.getParameter("txt_LF_numeroLote");
	String txt_LF_codigoProducto = request.getParameter("txt_LF_codigoProducto");
	String txt_LF_numeroOC = request.getParameter("txt_LF_numeroOC");

	String qryLFvisible = request.getParameter("qryLFvisible"); // grilla
								    // estado de
								    // visibilidad

	BeanLotesFacturados beanLotesFacturados = new BeanLotesFacturados();
	beanLotesFacturados.setCliente(cbo_LF_cliente);
	beanLotesFacturados.setPais(cbo_LF_pais);
	beanLotesFacturados.setRegion(cbo_LF_region);
	beanLotesFacturados.setNumeroPedido(txt_LF_numeroPedido);
	beanLotesFacturados.setFechaPedidoI(txt_LF_fechaPedidoI);
	beanLotesFacturados.setFechaPedidoF(txt_LF_fechaPedidoF);
	beanLotesFacturados.setNumeroFactura(txt_LF_numeroFactura);
	beanLotesFacturados.setFechaFacturaI(txt_LF_fechaFacturaI);
	beanLotesFacturados.setFechaFacturaF(txt_LF_fechaFacturaF);
	beanLotesFacturados.setNumeroLote(txt_LF_numeroLote);
	beanLotesFacturados.setCodigoProducto(txt_LF_codigoProducto);
	beanLotesFacturados.setNumeroOC(txt_LF_numeroOC);

	// OBTENER LISTA DE CLIENTES,PAISES Y REGIONES
	List listaClientes = getBusquedasLotesService().getListaClientes();
	List listaPaises = getBusquedasLotesService().getListaPaises();
	List listaRegiones = getBusquedasLotesService().getListaRegiones();

	// OBTENER LISTA DE LOTES FACTURADOS FILTRADOS
	List listaLotesFacturados = getBusquedasLotesService().listaLotesFacturados(beanLotesFacturados);
	BusquedasLotesCommand command = new BusquedasLotesCommand();

	// ENVIO A LA VISTA
	command.setNumeroPedido(txt_LF_numeroPedido);
	command.setFechaPedidoI(txt_LF_fechaPedidoI);
	command.setFechaPedidoF(txt_LF_fechaPedidoF);
	command.setNumeroFactura(txt_LF_numeroFactura);
	command.setFechaFacturaI(txt_LF_fechaFacturaI);
	command.setFechaFacturaF(txt_LF_fechaFacturaF);
	command.setNumeroLote(txt_LF_numeroLote);
	command.setCodigoProducto(txt_LF_codigoProducto);
	command.setNumeroOC(txt_LF_numeroOC);

	/* FECHA Y HORA BAJO LA GRILLA */
	command.setFechaHoraActual_LF(Util.getFechaHora());

	// envia el valor del combo de clientes al DC como hidden
	command.setCodigoCliente_DC(cbo_LF_cliente);

	// para combos selected
	command.setClienteSelected(cbo_LF_cliente);
	command.setPaisSelected(cbo_LF_pais);
	command.setRegionSelected(cbo_LF_region);

	// ESTADOS DE VISIBILIDAD
	command.setQryLFvisible(qryLFvisible);
	command.setQryLNFvisible("nodisplay"); // no mostrar grilla LNF
	command.setQryDCvisible("nodisplay"); // no mostrar grilla DC

	// ESTADOS DE RADIO BUTTONS
	command.setChk_LF("checked"); // radio lotes facturados

	command.setClientes(listaClientes);
	command.setPaises(listaPaises);
	command.setRegiones(listaRegiones);
	command.setLotesFacturados(listaLotesFacturados);
	model.put(Constantes.BUSQUEDAS_LOTES_COMMAND, command);

	return new ModelAndView(ConstantesView.VIEW_BUSQUEDAS_LOTES, model);
    }

    // BUSCAR LOTES NO FACTURADOS
    public ModelAndView buscarLotesNoFacturados(HttpServletRequest request, HttpServletResponse response) {

	Map model = new HashMap();

	String txt_LNF_numeroLote = request.getParameter("txt_LNF_numeroLote");
	String txt_LNF_fechaProduccionI = request.getParameter("txt_LNF_fechaProduccionI");
	String txt_LNF_fechaProduccionF = request.getParameter("txt_LNF_fechaProduccionF");
	String txt_LNF_codigoProducto = request.getParameter("txt_LNF_codigoProducto");
	String txt_LNF_numeroOC = request.getParameter("txt_LNF_numeroOC");

	// grilla estado de visibilidad
	String qryLNFvisible = request.getParameter("qryLNFvisible");

	BeanLotesNoFacturados beanLotesNoFacturados = new BeanLotesNoFacturados();
	beanLotesNoFacturados.setNumeroLote(txt_LNF_numeroLote);
	beanLotesNoFacturados.setFechaProduccionI(txt_LNF_fechaProduccionI);
	beanLotesNoFacturados.setFechaProduccionF(txt_LNF_fechaProduccionF);
	beanLotesNoFacturados.setCodigoProducto(txt_LNF_codigoProducto);
	beanLotesNoFacturados.setNumeroOC(txt_LNF_numeroOC);

	// OBTENER LISTA DE LOTES NO FACTURADOS FILTRADOS
	List listaLotesNoFacturados = getBusquedasLotesService().listaLotesNoFacturados(beanLotesNoFacturados);
	BusquedasLotesCommand command = new BusquedasLotesCommand();

	// OBTEBNER LISTA DE CLIENTES,PAISES Y REGIONES
	List listaClientes = getBusquedasLotesService().getListaClientes();
	List listaPaises = getBusquedasLotesService().getListaPaises();
	List listaRegiones = getBusquedasLotesService().getListaRegiones();

	// ENVIO A LA VISTA
	command.setNumeroLote_LNF(txt_LNF_numeroLote);
	command.setFechaProduccionI_LNF(txt_LNF_fechaProduccionI);
	command.setFechaProduccionF_LNF(txt_LNF_fechaProduccionF);
	command.setCodigoProducto_LNF(txt_LNF_codigoProducto);
	command.setNumeroOC_LNF(txt_LNF_numeroOC);

	command.setClientes(listaClientes);
	command.setPaises(listaPaises);
	command.setRegiones(listaRegiones);

	// FECHA Y HORA BAJO LA GRILLA
	command.setFechaHoraActual_LNF(Util.getFechaHora());

	// ESTADOS DE VISIBILIDAD
	command.setQryLNFvisible(qryLNFvisible);
	command.setQryLFvisible("nodisplay"); // no mostrar grilla LF
	command.setQryDCvisible("nodisplay"); // no mostrar grilla DC

	// ESTADOS DE RADIO BUTTONS
	command.setChk_LNF("checked"); // radio lotes no facturados

	// LISTA PARA GRILLA
	command.setLotesNoFacturados(listaLotesNoFacturados);

	model.put(Constantes.BUSQUEDAS_LOTES_COMMAND, command);

	return new ModelAndView(ConstantesView.VIEW_BUSQUEDAS_LOTES, model);
    }

    // BUSCAR DETALLE CONTRATO
    public ModelAndView buscarDetalleContrato(HttpServletRequest request, HttpServletResponse response) {

	Map model = new HashMap();

	String txt_DC_fechaContratoI = request.getParameter("txt_DC_fechaContratoI");
	String txt_DC_fechaContratoF = request.getParameter("txt_DC_fechaContratoF");
	String txt_DC_numeroContrato = request.getParameter("txt_DC_numeroContrato");
	String txt_DC_codigoProducto = request.getParameter("txt_DC_codigoProducto");
	String hid_DC_codigoCliente = request.getParameter("hid_DC_codigoCliente");

	// grilla estado de visibilidad
	String qryDCvisible = request.getParameter("qryDCvisible");

	BeanDetalleContrato beanDetalleContrato = new BeanDetalleContrato();
	beanDetalleContrato.setFechaContratoI(txt_DC_fechaContratoI);
	beanDetalleContrato.setFechaContratoF(txt_DC_fechaContratoF);
	beanDetalleContrato.setNumeroContrato(txt_DC_numeroContrato);
	beanDetalleContrato.setCodigoProducto(txt_DC_codigoProducto);

	// codigo cliente hidden
	beanDetalleContrato.setCodigoCliente(hid_DC_codigoCliente);

	// OBTENER LISTA DE DETALLE DE CONTRATOS FILTRADOS
	List listaDetalleContrato = getBusquedasLotesService().listaDetalleContrato(beanDetalleContrato);
	BusquedasLotesCommand command = new BusquedasLotesCommand();

	// OBTEBNER LISTA DE CLIENTES,PAISES Y REGIONES
	List listaClientes = getBusquedasLotesService().getListaClientes();
	List listaPaises = getBusquedasLotesService().getListaPaises();
	List listaRegiones = getBusquedasLotesService().getListaRegiones();

	// ENVIO A LA VISTA
	command.setFechaContratoI_DC(txt_DC_fechaContratoI);
	command.setFechaContratoF_DC(txt_DC_fechaContratoF);
	command.setNumeroContrato_DC(txt_DC_numeroContrato);
	command.setCodigoProducto_DC(txt_DC_codigoProducto);
	command.setCodigoCliente_DC(hid_DC_codigoCliente);

	command.setClientes(listaClientes);
	command.setPaises(listaPaises);
	command.setRegiones(listaRegiones);

	// FECHA Y HORA BAJO LA GRILLA
	command.setFechaHoraActual_DC(Util.getFechaHora());

	// ESTADOS DE VISIBILIDAD
	command.setQryDCvisible(qryDCvisible);
	command.setQryLFvisible("nodisplay"); // no mostrar grilla LF
	command.setQryLNFvisible("nodisplay"); // no mostrar grilla LNF

	// ESTADOS DE RADIO BUTTONS
	command.setChk_DC("checked"); // radio detalle contrato

	// LISTA PARA GRILLA
	command.setDetalleContrato(listaDetalleContrato);

	model.put(Constantes.BUSQUEDAS_LOTES_COMMAND, command);

	return new ModelAndView(ConstantesView.VIEW_BUSQUEDAS_LOTES, model);
    }

}
